En este notebook, investigaremos cómo se representan los números enteros y reales en la computadora.

Números enteros

Los humanos solemos utilizar base 10 para representar los números.

[1] Pensemos en el entero $n = 314159$. Sus dígitos son $a_5 = 3$, $a_4 = 1$, ..., $a_0 = 9$. Escribe $n$ en términos de potencias de $10$. Podemos escribir $314159_{10}$ para enfatizar la base.

[2] La computadora trabaja en términos de dígitos binarios, o bits, que pueden tomar sólo el valor 0 o 1, y por lo tanto representa los números en base 2. Cuál es la representación en base 2 (binario) del número $n = 50_{10}$?

[3] (i) Escribe una función que acepta una cadena en binario y regresa el entero correspondiente.

(ii) Escribe una función que acepta un entero y regresa su representación en binario como una cadena. Comprueba tu respuesta usando la función bits de Julia.

Números reales

De igual manera, nosotros solemos representar los números reales con expresiones en base 10 utilizando un punto decimal para separar la parte entera y la parte fraccionaria.

[4] Escribe el número $p = 31.4159$ en términos de potencias de $10$. ¿Cómo podemos llamar a los dígitos para que la expresión quede bonita?

[5] La computadora trabaja en términos de potencias de 2.

(i) ¿Cuál es el valor del número $101.0101_{2}$? Aquí hemos utilizado un "punto binario".

(ii) Escribe una función que toma una cadena en binario que incluya un punto y regresa el número correspondiente.

(iii) Escribe una función que toma un número real y regresa la cadena en binario correspondiente.

[6] ¿Cómo se representa $0.1_{10}$ en binario? ¿Qué notas? ¿Es sorprendente?

La representación "punto flotante"

El conjunto de números reales es no-numerable. El conjunto de los números que se pueden representar en la computadora usando un espacio finito es finito, sea la que sea la representación que se utilice. La representación que se ha adoptado se llama "punto flotante". En Julia, los números flotantes por defecto se representan con 64 bits. Investiguemos qué representan los distintos bits.

[6] Utiliza la función bits para investigar cómo se representan los siguientes números flotantes. [Para comprobar si el número es flotante, se utiliza la función typeof.]

$1$, $\frac{1}{2}$, $\frac{1}{4}$, $2$, $-2$, $0.1$, $0.2$, $0.4$, $3.14159$, $31.4159$, etc.

Será útil escribir una función que compara dos cadenas y te indica en dónde difieren.

[Una manera interesante de hacerlo es utilizar la función html del paquete Interact, que regresa una versión renderizada en HTML de una cadena, o Base.Markdown en la versión 0.4 de Julia, que permite escribir md"..." para renderizar la cadena en Markdown.]